package com.jdk.demo.fileChannel.transferFrom;

import java.io.RandomAccessFile;
import java.nio.channels.FileChannel;

// long transferFrom(ReadableByteChannel src, position, count)方法的作用是将字节从给定的可读字节通道传输到此通道的文件中。
// transferFrom方法的功能相当于read方法。只不过是将通道中的数据传输到另一个通道中，而不是缓冲区中
// 此方法不修改此通道的位置。如果给定的位置大于该文件的当前位置，则不传输任何字节。从源通道中的当前位置开始读取各字节写入到当前通道，然后将src通道的位置增加读取的字节数
// src：源通道
// position：文件中的位置，从此位置开始传输，必须是非负数
// count：要传输的最大字节数，必须为非负数
public class Test12_1 {

	public static void main(String[] args) throws Exception {
		RandomAccessFile fileA = new RandomAccessFile("l1.txt", "rw");
		RandomAccessFile fileB = new RandomAccessFile("l2.txt", "rw");
		
		FileChannel fileChannel1 = fileA.getChannel();
		FileChannel fileChannel2 = fileB.getChannel();
		
		fileChannel2.position(4);
		// position针对调用transferFrom方法的对象
		long readLength = fileChannel1.transferFrom(fileChannel2, 3, 2);
		System.out.println(readLength);
		
		// l1内容为"abc56fg"
		fileChannel1.close();
		fileChannel2.close();
		fileA.close();
		fileB.close();
	}
	
}
